package com.hulk.dryad.persistence.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId;

import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.hulk.dryad.persistence.entity.SuperEntity;

import java.io.Serializable;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * <p>
 * 系统日志
 * </p>
 *
 * @author hulk
 * @since 2021-03-23
 */
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("t_sys_oper_log")
public class SysOperLog extends SuperEntity<SysOperLog> {

	private static final long serialVersionUID = 1L;

	/**
	 * 主键id
	 */
	@TableId(value = "id", type = IdType.AUTO)
	private Long id;

	/**
	 * 用户id
	 */
	@TableField("user_id")
	private Long userId;

	/**
	 * 用户名
	 */
	@TableField("user_name")
	private String userName;

	/**
	 * 日志类型(LOGIN,LOGOUT,OPER)
	 */
	@TableField("log_type")
	private String logType;

	/**
	 * 描述
	 */
	@TableField("description")
	private String description;

	/**
	 * 请求参数
	 */
	@TableField("params")
	private String params;

	/**
	 * 请求数据
	 */
	@TableField("data")
	private String data;

	/**
	 * 操作动作类型（其它-OTHER 增-ADD  删-DEL 修改-UPDATE 查-GET）
	 */
	@TableField("action_type")
	private String actionType;

	/**
	 * 是否成功（0正常 1失败）
	 */
	@TableField("status")
	private String status;

	/**
	 * 类#方法
	 */
	@TableField("class_method")
	private String classMethod;

	/**
	 * 异常信息
	 */
	@TableField("exception_msg")
	private String exceptionMsg;

	/**
	 * 请求ip
	 */
	@TableField("request_ip")
	private String requestIp;

	/**
	 * 当前用户请求的url
	 */
	@TableField("request_url")
	private String requestUrl;

	/**
	 * 请求持续耗时(秒)
	 */
	@TableField("run_duration")
	private Long runDuration;

	/**
	 * GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,TRACE
	 */
	@TableField("http_method")
	private String httpMethod;

	/**
	 * 系统信息
	 */
	@TableField("os")
	private String os;

	/**
	 * 浏览器信息
	 */
	@TableField("browser")
	private String browser;

	/**
	 * 地址
	 */
	@TableField("address")
	private String address;

	/**
	 * 创建时间
	 */
	@TableField(value = "created_time", fill = FieldFill.INSERT)
	private LocalDateTime createdTime;

	/**
	 * 修改时间
	 */
	@TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
	private LocalDateTime updatedTime;

	@TableField("rsv1")
	private String rsv1;

	@TableField(exist = false)
	private LocalDateTime[] searchTime;


	@Override
	protected Serializable pkVal() {
		return this.id;
	}

}
